package logger.sd.util;

import org.apache.log4j.Level;

/**
 * Esqueleto do Logger Distribuido
 * 
 * @author wendell
 * 
 */
public abstract class AbstractLogger implements Logger {

	/**
	 * Envia mensagem de DEBUG
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void debug(String message) {
		log(Level.DEBUG, message);
	}

	/**
	 * Envia mensagem de ERROR
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void error(String message) {
		log(Level.ERROR, message);
	}

	/**
	 * Envia mensagem de FATAL
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void fatal(String message) {
		log(Level.FATAL, message);
	}

	/**
	 * Envia mensagem de INFO
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void info(String message) {
		log(Level.INFO, message);
	}

	/**
	 * Envia mensagem de WARN
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void warn(String message) {
		log(Level.WARN, message);
	}

	/**
	 * Envia mensagem de WARN
	 * 
	 * @param message
	 *            Mensagem que sera enviada
	 */
	public void trace(String message) {
		log(Level.TRACE, message);
	}

	/**
	 * Cliente - Envio de requisicao de log Servidor - Escrita no arquivo de log
	 * 
	 * @param level
	 *            Nivel da mensagem
	 * @param message
	 *            Mensagem que sera enviada
	 * @param t
	 *            Throwable (geralmente Exception) que sera enviado
	 */
	public abstract void log(Level level, String message);

}
